package main

/**
一个目录下不能有重复的函数

*/

import "fmt"

//匿名函数
func main() {
	sub := func(num1 int, num2 int) int {
		return num1 - num2
	}
	fmt.Println(sub(6, 4))

	f := getSum()
	fmt.Println(f(6))
	fmt.Println(f(6))
	fmt.Println(	add(2,4))
}

//闭包：返回得匿名函数+匿名函数以外得变量
//闭包应用场景:闭包可以保留上次引用得某个值，传入一次可以永远引用(一直保存到内存中)
func getSum() func(int) int {
	var sum int = 0
	return func(num int) int {
		sum += num
		return sum
	}
}

//defer
func add(num1 int, num2 int) int {
	defer fmt.Println("num1=", num1)
	defer fmt.Println("num2=", num2)
	num1+=32
	num1+=32
	var sum int = num1 + num2
	fmt.Println("sum=", sum)
	return sum
}
